home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Graphics Plus
/
Graphics Plus.iso
/
msdos
/
modelers
/
3dkit1
/
2dtoexf.c
next >
Wrap
Text File
|
1992-05-25
|
2KB
|
74 lines
/* 2DtoEXF - convert 2-D list to Evolution Computing (EasyCAD, FastCAD)
Echange File Format (.EXF) */
/* Oscar Garcia <garciao@mof.govt.nz>, May 1992 */
#include <stdlib.h>
#include <stdio.h>
#define USAGE "usage: 2DtoEXF [infile [outfile]]\n\
\tIf file names are omitted, the standard i/o streams are used.\n"
#define ERROR(msg) {fputs(msg,stderr),exit(1);}
#define PERROR(msg) {perror(msg),exit(1);}
#define RECLEN 81
void main(int argc, char* argv[])
{
int c;
double x, y, x0 = 0, y0 = 0;
char comment[RECLEN + 1];
FILE *input = stdin, *output = stdout;
/* open files */
if (argc > 3)
ERROR(USAGE); /* wrong arguments */
if (argc > 1)
{ input = fopen(argv[1], "rt");
if (input == NULL)
{ fputs("Can't open input file\n", stderr);
ERROR(USAGE);
}
}
if (argc > 2)
{ output = fopen(argv[2], "wt");
if (output == NULL)
ERROR("Can't open output file");
}
/* fake file name */
fputs("3DV.DWG\n\n", output);
/* transfer comments */
while ((c = getc(input)) == '#')
{ fgets(comment, RECLEN, input);
putc(';', output);
fputs(comment, output);
}
if (ferror(input))
PERROR("Bad file");
ungetc(c, output);
/* do it */
while (3 == fscanf(input, "%lf %lf %d", &x, &y, &c))
{ if (c != 0)
{ /* draw */
fprintf(output, "LINE\n1,%d,%g,%g,%g,%g,1\n\n",
c, x0, y0, x, y);
}
x0 = x;
y0 = y;
}
if (ferror(input))
PERROR("Error on input");
fclose(input);
fputs("EOF\n", output);
if (ferror(output))
PERROR("Error on output");
fclose(output);
}